package com.woniuxy.facty;

import com.woniuxy.test.person;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class Perfactory {

    public person getBean(String keyname) {
        //创建一个静态的属性
         Map<String, person> map = new HashMap<>();
        //properties是个集合，主要用于是读取配置文件的
        Properties properties = new Properties();
        //使用当前的工厂读取这个配置文件
        InputStream resourceAsStream = Perfactory.class.getResourceAsStream("person.properties");
        try {
            //加载这个流
            properties.load(resourceAsStream);
            //stringPropertyNames获取所有的key
            for (String key : properties.stringPropertyNames()) {
                //getProperty通过key获取value
                //这个时候的property的数据其实已经是=com.woniuxy.impl.America了。是一个类全名
                String property = properties.getProperty(key);
                //通过反射创建出对应的类。使用了上面的参数property其实是使用的类全名
                person person = (person) Class.forName(property).newInstance();
                //将对应的key和value放到map中去
                map.put(key, person);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return map.get(keyname);
    }

}
